<?php

/**
 * operador actions.
 *
 * @package    cronos-doctrine
 * @subpackage operador
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class operadorActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('default', 'module');
  }
  
  public function executeRutaMapa(sfWebRequest $request)
  {
    
  }
  
    
  public function executeRutaAgendado(sfWebRequest $request)
  {
      
    $this->idAgendado = $request->getParameter('idAgendado');
     
    $camioneta = new Camioneta();
    $camioneta = $camioneta->getCamionetaGuardUser($this->getUser()->getGuardUser()->getId());
  
    if(isset($camioneta)){
        $this->camioneta_id = $camioneta->getId();
    }else {
        $this->camioneta_id = 1;
    } 
    
    $camioneta = new Camioneta();
    $this->camioneta =  $camioneta->getCamionetaId($this->camioneta_id);
    
    $this->fechaRuta = date('Y')."-".date('m')."-".date('d');
    //$this->fechaRuta = '2012-05-08';
    $agendado = new Agendado();
    $this->agendados = $agendado->getAgendadoRuta($this->camioneta_id, $this->fechaRuta);
    
  }
  
   public function executeRutaImp(sfWebRequest $request)
  {
      
    $this->camioneta_id = $request->getParameter('camioneta_id');
    $this->idAgendado = $request->getParameter('idAgendado');
    $this->fechaRuta = $request->getParameter('fechaRuta');
     
    $camioneta = new Camioneta();
    $camioneta = $camioneta->getCamionetaGuardUser($this->getUser()->getGuardUser()->getId());
  
    
    $camioneta = new Camioneta();
    $this->camioneta =  $camioneta->getCamionetaId($this->camioneta_id);
    $this->camionetas = $camioneta->getCamionetas();
    
    if(empty($this->fechaRuta))
    $this->fechaRuta = date('Y')."-".date('m')."-".date('d');
    //$this->fechaRuta = '2012-05-08';
    $agendado = new Agendado();
    $this->agendados = $agendado->getAgendadoRutaImpCompleto($this->camioneta_id, $this->fechaRuta);
   
    
    
  }
     public function executeCuadroResumen(sfWebRequest $request)
  {
    
    $this->fechaRuta    = $request->getParameter('fechaRuta');
    $this->fechaRutaFin = $request->getParameter('fechaRutaFin');
     
    $camioneta = new Camioneta();
    $camioneta = $camioneta->getCamionetaGuardUser($this->getUser()->getGuardUser()->getId());
  
    
    $camioneta = new Camioneta();
    $this->camioneta =  $camioneta->getCamionetaId($this->camioneta_id);
    $this->camionetas = $camioneta->getCamionetas();
    
    if(empty($this->fechaRuta))
    $this->fechaRuta    = date('Y')."-".date('m')."-".date('d');
    
    if(empty($this->fechaRutaFin))
    $this->fechaRutaFin = date('Y')."-".date('m')."-".date('d');
    
    
    
    //$this->fechaRuta = '2012-05-08';
    $agendado = new Agendado();
    $this->agendados = $agendado->getAgendadoFecha($this->fechaRuta, $this->fechaRutaFin);
   
    $categoria = new Categoria();
    $this->servicios = $categoria->getCategoriaPadre()->execute();
    
    
  }
  
     public function executeRutaMonitor(sfWebRequest $request)
  {
     
        $this->camioneta_id = $request->getParameter('camioneta_id');
        $this->idAgendado = $request->getParameter('idAgendado');
        $this->fechaRuta = $request->getParameter('fechaRuta');

        $camioneta = new Camioneta();
        $camioneta = $camioneta->getCamionetaGuardUser($this->getUser()->getGuardUser()->getId());


        $camioneta = new Camioneta();
        $this->camioneta =  $camioneta->getCamionetaId($this->camioneta_id);
        $this->camionetas = $camioneta->getCamionetas();

        if(empty($this->fechaRuta))
        $this->fechaRuta = date('Y')."-".date('m')."-".date('d');
        //$this->fechaRuta = '2012-05-08';
        $agendado = new Agendado();
        $this->agendados = $agendado->getAgendadoRutaImp($this->camioneta_id, $this->fechaRuta);
    
    
  }
  
     public function executeLlamadaCancelada(sfWebRequest $request)
  {
     
        $this->camioneta_id = $request->getParameter('camioneta_id');
        $this->idAgendado = $request->getParameter('idAgendado');
        $this->fechaRuta = $request->getParameter('fechaRuta');

        $camioneta = new Camioneta();
        $camioneta = $camioneta->getCamionetaGuardUser($this->getUser()->getGuardUser()->getId());


        $camioneta = new Camioneta();
        $this->camioneta =  $camioneta->getCamionetaId($this->camioneta_id);
        $this->camionetas = $camioneta->getCamionetas();

        if(empty($this->fechaRuta))
        $this->fechaRuta = date('Y')."-".date('m')."-".date('d');
        //$this->fechaRuta = '2012-05-08';
        $agendado = new Agendado();
        $this->agendados = $agendado->getAgendadoRutaCanceladas($this->camioneta_id, $this->fechaRuta);
    
    
  }
  
  
  public function executeConfirmacion(sfWebRequest $request)
  {
      $confirmacion_id = $request->getParameter('confirmacion_id');
      $agendado_id = $request->getParameter('agendado_id');
      $quien_id = $request->getParameter('quien_id');
      $redirect = '';

            /* 1) Espera de Solicitud
             * 2) Solicitando Confirmacion
             * 3) Por Confirmar
             * 4) Confirmado
             * 5) Confirmacion Recibida
             */
      
      //$quien_id =1  administrador  
      //Puede cambiar todas los estados de la confirmacion
      // de: 1 -> 2 -> 3 -> 4 -> 5 -> 1
      
      //$quien_id =2 Operdador
      //Puede Cambiar solo los estados de la necesarios para la confirmacion al monitor
      // de: 1 -> 2 -> 5
      
      //$quien_id =3 Monitor
      //Puede Cambiar solo los estados de los necesarios para confirmacion del operador
      // de: 2 -> 3 -> 4
      
      if($agendado_id and $confirmacion_id) {
          $agendado = new Agendado();
          $agendado = $agendado->getAgendadoId($agendado_id);
          $agendado = $agendado->getFirst();
          
          
          
          if(($agendado)&&($request->getParameter('status'))){
              if($confirmacion_id == 1 and ($quien_id == 1 or $quien_id ==2)) {
                  $agendado->setConfirmacionId(2);
              }if($confirmacion_id == 2 and ($quien_id == 1 or $quien_id == 3)) {
                  $agendado->setConfirmacionId(3);
                  $redirect = 'Monitor';
              }if($confirmacion_id == 3 and ($quien_id == 1 or $quien_id == 3)) {
                  $redirect = 'Monitor';
                  $agendado->setConfirmacionId(4);
              }if($confirmacion_id == 4 and ($quien_id == 1 or $quien_id == 2)) {
                  $agendado->setConfirmacionId(5);
              }if($confirmacion_id == 5 and ($quien_id ==1 or $quien_id == 2)){
                  $agendado->setConfirmacionId(6);
              }
              if($confirmacion_id == 6 and $quien_id ==1){
                  $agendado->setConfirmacionId(1);
              }
            $agendado->save();
          }
      }
      
      
      if($redirect=='Monitor'){
        $this->redirect('dashboard/agendado?opVista=ver&ejecucionProceso=durante&idUser='.$agendado->getUsuarioId().'&idAgendado='.$agendado->getId());
      }else{
        return $this->renderPartial('statusConfirmacion',array('agendado' => $agendado));     
      }
      
 
  }
  
  public function executeNewEvaluacion(sfWebRequest $request)
  {
      
      $categoria_id =  $request->getParameter('categoria_id');
      $mascota_id = $request->getParameter('mascota_id');
      $operador_id =  $request->getParameter('operador_id');
      $evaluacion = new Evaluacion();
      $evaluacion->categoria_id = $categoria_id;
      $this->form = new EvaluacionForm($evaluacion);
      $this->form->setWidget('mascota_id', new sfWidgetFormInputHidden(array(),array('value' => $mascota_id)));
      $this->form->setWidget('operador_id', new sfWidgetFormInputHidden(array(),array('value' => $operador_id)));
      
  }
  
  public function executeCreateEvaluacion(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST)); 
    $categoria_id = $request->getParameter('categoria_id');
    $mascota_id = $request->getParameter('mascota_id');
    $operador_id = $request->getParameter('operador_id');
    $evaluacion = new Evaluacion();
    $evaluacion->categoria_id = $categoria_id;
    $this->form = new EvaluacionForm($evaluacion);
    $this->form->setWidget('mascota_id', new sfWidgetFormInputHidden(array(),array('value' => $mascota_id)));
    $this->form->setWidget('operador_id', new sfWidgetFormInputHidden(array(),array('value' => $operador_id)));
    $this->processFormEvaluacion($request, $this->form);
    $this->getUser()->setFlash('error', 'No se pudo Crear el item, existen errores en el formulario.\n Por favor revisar campos resaltado'); 
    $this->setTemplate('newEvaluacion');
  }
  
  public function executeEditEvaluacion(sfWebRequest $request)
  {
    $this->forward404Unless($evaluacion = Doctrine_Core::getTable('Evaluacion')->find(array($request->getParameter('id'))), sprintf('Object usuario does not exist (%s).', $request->getParameter('id')));
    $this->form = new EvaluacionForm($evaluacion);
    $this->form->setWidget('mascota_id', new sfWidgetFormInputHidden(array(),array()));
    $this->form->setWidget('operador_id', new sfWidgetFormInputHidden(array(),array()));
    
  }

  public function executeUpdateEvaluacion(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($evaluacion = Doctrine_Core::getTable('Evaluacion')->find(array($request->getParameter('id'))), sprintf('Object usuario does not exist (%s).', $request->getParameter('id')));
    $this->form = new EvaluacionForm($evaluacion);
    $this->form->setWidget('mascota_id', new sfWidgetFormInputHidden(array(),array()));
    $this->form->setWidget('operador_id', new sfWidgetFormInputHidden(array(),array()));
    $this->processFormEvaluacion($request, $this->form);
    $this->getUser()->setFlash('error', 'No se Actualizar el item, existen errores en el formulario.\n Por favor revisar campos resaltado'); 
    $this->setTemplate('editEvaluacion');
  }
  
  protected function processFormEvaluacion(sfWebRequest $request, sfForm $form)
  {

    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
        $notice = $form->getObject()->isNew() ? 'El item se creó correctamente.' : 'El item se actualizó correctamente.';  
        
        try {
            $evaluacion = $form->save();
            
        } catch (Doctrine_Validator_Exception $e) {

        $errorStack = $form->getObject()->getErrorStack();
        $message = get_class($form->getObject()) . ' has ' . count($errorStack) . " field" . (count($errorStack) > 1 ?  's' : null) . " with validation errors: ";
        foreach ($errorStack as $field => $errors) {
            $message .= "$field (" . implode(", ", $errors) . "), ";
        }
        $message = trim($message, ', ');

        $this->getUser()->setFlash('error', $message);
        return sfView::SUCCESS;
      }
           
      $this->getUser()->setFlash('notice', $notice);
      $this->redirect('operador/editEvaluacion?id='.$evaluacion->getId());
    }
  }
  
  
}
